package com.qf.hotel.service.impl;

import com.qf.hotel.dao.FoodDao;
import com.qf.hotel.factory.BeanFactory;
import com.qf.hotel.pojo.Food;
import com.qf.hotel.pojo.FoodType;
import com.qf.hotel.service.FoodService;
import org.apache.commons.beanutils.BeanUtils;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Food业务实现类
 */
public class FoodServiceImpl implements FoodService {
    private FoodDao foodDao = (FoodDao) BeanFactory.getBean("foodDao");
    /**
     * 菜品查询
     *  把查询到的结果解析
     *     解析的结果放入Food对象
     *      解析的结果有food表和food_type表中的数据
     * @param food
     * @return
     * @throws SQLException
     */
    @Override
    public List<Food> findByCondition(Food food) throws Exception {
        // 判断是否有条件====food是否为null   foodName是否是空字符串
        if (food == null || food.getFoodName()==null || food.getFoodName().trim().equals("")){
            // 没有输入条件的情况
            // %%
            food.setFoodName("%%");
        } else{
            food.setFoodName("%"+food.getFoodName().trim()+"%");    // 毛氏红烧肉
        }

        // 执行查询
        List<Map<String, Object>> mapList = foodDao.findByCondition(food);

        ArrayList<Food> foods = new ArrayList<>();

        // 提取mapList中的内容
        for (Map<String, Object> map : mapList) {
            // 把map中的数据取出赋值给food中的属性
            Food foodModel = new Food();
            BeanUtils.populate(foodModel,map);

            // 把map中数据取出放入foodType
            FoodType foodType = new FoodType();
            BeanUtils.populate(foodType,map);

            // 把foodType放入food
            foodModel.setFoodType(foodType);

            // 把foodModel放入foods集合
            foods.add(foodModel);
        }

        return foods;
    }

    /**
     * 添加food
     * @param food
     * @return
     */
    @Override
    public int save(Food food) {
        try {
            return foodDao.save(food);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

}
